package com.boot.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

//注解开启 swagger2 功能
@EnableSwagger2
//注解标示,这是一个配置类,@Configuation注解包含了@Component注解
//可以不用在使用@Component注解标记这是个bean了,
@Configuration
public class Swagger2Config {

	/**
	 * 通过 createRestApi函数来构建一个DocketBean
	 * 函数名,可以随意命名,喜欢什么命名就什么命名
	 */
	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2)
		
		.apiInfo(apiInfo())//调用apiInfo方法,创建一个ApiInfo实例,里面是展示在文档页面信息内容
		.select()// 选择那些路径和api会生成document
		//控制暴露出去的路径下的实例
		//如果某个接口不想暴露,可以使用以下注解
		//@ApiIgnore 这样,该接口就不会暴露在 swagger2 的页面下
		//.apis(RequestHandlerSelectors.basePackage("com.boot.**.controller"))
		.paths(PathSelectors.regex("(?!/error.*).*"))
		.build();
	}
	//构建 api文档的详细信息函数
	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
		//页面标题
		.title("RESTful API接口文档")
		//创建人
		//.contact("autor")
		//版本号
		.version("1.0")
		//描述
		.description("API接口文档")
		.build();
	}
}
